package org.jupiter.blog.service.service;

import org.jupiter.blog.api.dto.JupiterUserDTO;

import java.util.List;

public interface JupiterUserService {

	/**
	 * 创建用户
	 */
	void createUser(JupiterUserDTO dto) throws Exception;

	/**
	 * 根据UUID获取用户
	 */
	JupiterUserDTO getById(String uuid);

	/**
	 * 根据用户名或邮箱获取用户
	 */
	JupiterUserDTO getByUsernameOrEmail(String username, String email);

	/**
	 * 更新用户信息
	 */
	void updateUser(String uuid, JupiterUserDTO dto) throws Exception;

	/**
	 * 删除用户
	 */
	void deleteUser(String uuid);

	/**
	 * 分页查询用户列表
	 */
	List<JupiterUserDTO> getByPage(JupiterUserDTO queryDTO);

	/**
	 * 获取用户总数
	 */
	long getCount(JupiterUserDTO queryDTO);

	/**
	 * 更新用户状态
	 */
	void updateStatus(String uuid, Integer status) throws Exception;

	/**
	 * 重置用户密码
	 */
	void resetPassword(String uuid) throws Exception;

	/**
	 * 重置用户密码
	 */
	void restoreUser(String uuid);

	/**
	 * 检查用户名是否存在
	 */
	boolean existsByUsername(String username);

	/**
	 * 检查邮箱是否存在
	 */
	boolean existsByEmail(String email);
}
